package com.redpack.redpost.util.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

import com.redpack.redpost.connection.RedpostConexion;
import com.redpack.redpost.util.to.*;

public class ReporteVentasDao {

	
	public static List getReporteVentas(String fecha_inicio,String fecha_final,String nip,int status,String forma_pago) throws Exception {
		
		Connection conn = RedpostConexion.openConnection( ) ;
		conn.setAutoCommit( false ) ;
		PreparedStatement ps = null ;
		ResultSet rs = null ;
		List _ReporteArribo = new ArrayList(); 
		String sql = "" ;
		
		try{			
			sql += "select UR.nombre, UR.apellidos,";
			sql += " (CASE WHEN ur.fp IS NULL THEN '' ELSE ur.fp END) ,";
			sql += " EA.descripcion as descripcion_status,* from redpost.tbl_arribo AR  ";
			sql += "inner join redpost.tbl_estatus_arribo EA on EA.cve_estatus_arribo = AR.status  ";
			sql += "inner join redpost.tbl_usuarioredpost UR on UR.nip = AR.nip  ";
			
			sql += "where AR.status = EA.cve_estatus_arribo";
			
			
			if(fecha_inicio != "" && fecha_final != ""){
				sql += " and AR.fecha_arribo >= '"+ fecha_inicio +"' and AR.fecha_arribo <= '"+ fecha_final +"' ";
			}
			if(fecha_inicio == "" && fecha_final != ""){
				sql += " and AR.fecha_arribo = '"+ fecha_final +"' ";
			}
			if(fecha_inicio != "" && fecha_final == ""){
				sql += " and AR.fecha_arribo = '"+ fecha_inicio +"' ";
			}
			if(status > 0 ){
				sql += " and AR.status = " + status;
			}
			if(nip != "" && nip != null){
					sql += " and AR.nip = '"+ nip +"' ";
			}
			if(forma_pago != "" && forma_pago != null){
				sql += " and UR.fp = '"+ forma_pago +"' ";
			}
			
			
			ps = conn.prepareStatement( sql ) ;
			rs = ps.executeQuery();
			DecimalFormat fmt = new DecimalFormat("###,###,###.##");
//			fmt.format(
			while (rs.next()) {
				ReporteArriboToR row = new ReporteArriboToR();
				row.setNombre(rs.getString("nombre"));
				row.setApellidos(rs.getString("apellidos"));
				row.setDescripcion_status(rs.getString("descripcion_status"));
				row.setValor_mercancia_usd(fmt.format(rs.getFloat("valor_mercancia_usd")));
			    row.setStatus(rs.getInt("status"));
				row.setCve_arribo(rs.getInt("cve_arribo"));
				row.setNip(rs.getString("nip"));
				row.setServicio(rs.getInt("servicio"));
				row.setFecha_arribo(rs.getString("fecha_arribo"));
				row.setCve_guia_arribo(rs.getString("cve_guia_arribo"));
				row.setNum_paquetes(rs.getInt("num_paquetes"));
				row.setDesc_mercancia(rs.getString("desc_mercancia"));
				row.setTipo_conv_captura(rs.getInt("tipo_conv_captura"));
				row.setPeso_real_total_kg(fmt.format(rs.getFloat("peso_real_total_kg")));
				row.setPeso_real_total_lb(fmt.format(rs.getFloat("peso_real_total_lb")));
				row.setPeso_volumetrico_total_kg(fmt.format(rs.getFloat("peso_volumetrico_total_kg")));
				row.setPeso_volumetrico_total_lb(fmt.format(rs.getFloat("peso_volumetrico_total_lb")));
				row.setImpuestos_total(fmt.format(rs.getFloat("impuestos_total")));
				row.setEnvio_entrega_total(fmt.format(rs.getFloat("envio_entrega_total")));
				row.setManejo_total(fmt.format(rs.getFloat("manejo_total")));
				row.setSeguro_transporte_total(fmt.format(rs.getFloat("seguro_transporte_total")));
				row.setCargos_adicionales_total(fmt.format(rs.getFloat("cargos_adicionales_total")));
				row.setDevolucion(rs.getInt("devolucion"));
				row.setFlete_devolucion(fmt.format(rs.getFloat("flete_devolucion")));
				row.setAlmacenaje_costo_total(fmt.format(rs.getFloat("almacenaje_costo_total")));
				row.setAlmacenaje_total(fmt.format(rs.getFloat("almacenaje_total")));
				row.setOtros(fmt.format(rs.getFloat("otros")));
				row.setTarifa_especial_val_merc(fmt.format(rs.getFloat("tarifa_especial_val_merc")));
				row.setTotal_pagado(fmt.format(rs.getFloat("total_pagado")));
				row.setAplicar_puntos_rec(rs.getInt("aplicar_puntos_rec"));
				row.setCve_direccion_alterna(rs.getInt("cve_direccion_alterna"));
				row.setActivo(rs.getInt("activo"));
				row.setTarifa_devolucion(fmt.format(rs.getFloat("tarifa_devolucion")));
				row.setCve_guia_redpack(rs.getString("cve_guia_redpack"));
				row.setForma_pago(rs.getString("fp"));
				
				_ReporteArribo.add( row );
			}
			
			conn.commit( ) ;
			ps.close( ) ;
			conn.close( ) ;
			
			return _ReporteArribo ;
			
		}catch ( Exception e ) {
			e.printStackTrace( ) ;
			return _ReporteArribo = null ;
		} finally {
	        if (conn != null) {
	            conn.close();
	        }
			
		}
	}	
	
}
